/* Mesquite source code.  Copyright 1997 and onward, W. Maddison and D. Maddison. 


Disclaimer:  The Mesquite source code is lengthy and we are few.  There are no doubt inefficiencies and goofs in this code. 
The commenting leaves much to be desired. Please approach this source code with the spirit of helping out.
Perhaps with your help we can be more than a few, and make Mesquite better.

Mesquite is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
Mesquite's web site is http://mesquiteproject.org

This source code and its compiled class files are free and modifiable under the terms of 
GNU Lesser General Public License.  (http://www.gnu.org/copyleft/lesser.html)
*/
package mesquite.lib;

import java.awt.*;
import mesquite.lib.duties.*;

/* ��������������������������� commands ������������������������������� */
/* includes commands,  buttons, miniscrolls

/* ======================================================================== */

/* ======================================================================== */
/**Interface for object to claim it is commandable.  MesquiteModules, MesquiteWindows and other classes are Commandable.*/
public interface Commandable {
	/** This method sends two strings to the Commandable: the command name, and the arguments.  In order to support the 
	command documentation system, a non-null CommandChecker must be passed to the command.  The scripting parameter indicates
	whether the command comes from a script (e.g., saved in the Mesquite block of a NEXUS file, or in a macro file) or is attached to
	a direct user-interface action (e.g. selecting a menu or hitting a button).  In the former, the commanded object should avoid interaction with the user
	to make decisions about parameters; in the latter, it is appropriate for the object to query the user for informations as needed. */
 	public Object doCommand(String commandName, String arguments, CommandChecker checker);
}

